/*
 * Chargement.java
 * Gere le chargement d'une partie enregistre
 */



package Risk.IHM;

import Risk.Moteur.Jeu;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

import java.util.StringTokenizer;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 *
 * @author Sebastien Depoix
 */
public class Chargement {
    public Chargement(String chemin) {
	try {
	    FileInputStream	fis  = new FileInputStream(chemin);
	    ObjectInputStream	ois  = new ObjectInputStream(fis);
	    Jeu			risk = (Jeu) ois.readObject();

	    if (ConnexionServeurIHM.CONNECTE) {
		risk.setTc(MenuConnexion.menuConnect.getFenetreConnexionServeur().getTc());
	    }

	    PlateauIhm	plateauIhm = new PlateauIhm(risk, false);

	    risk.setPihm(plateauIhm);
	    choixImageCarte(plateauIhm);
	    plateauIhm.setVisible(true);
	    MenuConnexion.menuConnect.setDernierPlateau(plateauIhm);
	    MenuConnexion.menuConnect.setVisible(false);
	} catch (IOException e) {
	    e.printStackTrace();
	} catch (ClassNotFoundException e) {
	    e.printStackTrace();
	}
    }

    // Nicoleta
    public void choixImageCarte(final PlateauIhm pIHM) {
	final JDialog	choixCarte = new JDialog(pIHM, "Choix de la carte");

	choixCarte.setModal(true);
	choixCarte.setLayout(new BorderLayout());
	choixCarte.setResizable(false);
	choixCarte.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

	final JLabel	jlPreview        = new JLabel();
	final String	cheminImgPlateau = "Images/PlateauxImg/";
	ImageIcon	img              = new ImageIcon(cheminImgPlateau + "carte2.png");

	img.setImage(img.getImage().getScaledInstance(img.getIconWidth() / 2, img.getIconHeight() / 2,
		Image.SCALE_DEFAULT));
	jlPreview.setIcon(img);

	JPanel	jpBoutBas = new JPanel(new GridLayout(1, 2));
	JButton	jbChoix   = new JButton("Autre carte...");
	JButton	jbOk      = new JButton("Reprendre le jeu");

	jpBoutBas.add(jbChoix);
	jpBoutBas.add(jbOk);
	jbChoix.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent e) {
		JFileChooser		jfc    = new JFileChooser("./Images");
		FileNameExtensionFilter	filter = new FileNameExtensionFilter("Fichiers Images", "jpg", "gif", "png");

		jfc.setFileFilter(filter);

		int	returnVal = jfc.showOpenDialog(MenuConnexion.menuConnect);

		if (returnVal == JFileChooser.APPROVE_OPTION) {
		    File		fichier     = jfc.getSelectedFile();
		    String		nomFich     = fichier.getName();
		    String		cheminFich  = fichier.getParent();
		    StringTokenizer	st          = new StringTokenizer(nomFich, ".");
		    String		radicalFich = st.nextToken();

		    cheminFich += File.separator;

		    // preview de l'image
		    ImageIcon	imgPreview = new ImageIcon(cheminImgPlateau + nomFich);

		    imgPreview.setImage(imgPreview.getImage().getScaledInstance(imgPreview.getIconWidth() / 2,
			    imgPreview.getIconHeight() / 2, Image.SCALE_DEFAULT));
		    jlPreview.setIcon(imgPreview);
		    pIHM.remplacerCarte(cheminFich + radicalFich + ".dat", cheminFich + nomFich);
		    pIHM.majPanneau();
		}
	    }
	});
	jbOk.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent e) {
		choixCarte.setVisible(false);
	    }
	});
	choixCarte.add(jlPreview, BorderLayout.CENTER);
	choixCarte.add(jpBoutBas, BorderLayout.SOUTH);
	choixCarte.pack();
	choixCarte.setVisible(true);
    }
}
